package com.example.demo.demos.web.controller;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;
import com.example.demo.demos.web.User;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class TokenUtil {
    //过期时间
    private static final long EXPIRE_DATE=30*60*100000;
    private static final String TOKEN_SECRET="ZCfasfhuaUUHufguGuwu2020BQWE";
    public static String token(String username,String password){
        String token="";
        try{
            Date date=new Date(System.currentTimeMillis()+EXPIRE_DATE);
            Algorithm algorithm=Algorithm.HMAC256(TOKEN_SECRET);
            Map<String,Object> header=new HashMap<>();
            header.put("typ","JWT");
            header.put("alg","HS256");
            token=JWT.create().withHeader(header).withClaim("username",username).withClaim("password",password).withExpiresAt(date).sign(algorithm);
        }catch (Exception e){
          e.printStackTrace();
          return null;
        }
        return  token;
    }
public static boolean verify(String token){
        try {
            Algorithm algorithm=Algorithm.HMAC256(TOKEN_SECRET);
            JWTVerifier verifier=JWT.require(algorithm).build();
            DecodedJWT jwt=verifier.verify(token);
            return true;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
}
    public static void main(String[] args){
//        for(int i=0;i<20;i++){
//            System.out.println(UUID.randomUUID().toString());
//        }
    }
}
